]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
windowManager: Unminimize a window to its buffer rect geometry
authorDaniel van Vugt <daniel.van.vugt@canonical.com>
Thu, 16 Dec 2021 07:36:43 +0000 (15:36 +0800)
committerMarge Bot <marge-bot@gnome.org>
Wed, 22 Dec 2021 16:16:23 +0000 (16:16 +0000)
If you slow down the unminimize animation you will notice it overshoots and
then snaps back, but only for decorated windows. Undecorated windows would
unminimize to their correct position. So we remove decorations from the
equation and now all window types unminimize to their correct position.

This wasn't noticeable because the unminimize animation velocity is usually
so high at the end (EASE_IN_EXPO) that there are no frames rendered near the
end of the curve to show it had overshot.

This appears to be consistent with the Mutter source - associating the
actor geometry with `buffer_rect` and not `frame_rect`. See
`meta_window_actor_sync_actor_geometry` for example.

Related to: https://bugzilla.gnome.org/show_bug.cgi?id=786789#c1

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2066>

js/ui/windowManager.js

index d3c4d26552b7a09cbc4d647e9eb27ac93def634c..50bfbab695f1a5e7432df99bffdaf5372b2c0589 100644 (file)
@@ -1240,7 +1240,7 @@ var WindowManager = class {
                 actor.set_scale(0, 0);
             }
 
-            let rect = actor.meta_window.get_frame_rect();
+            let rect = actor.meta_window.get_buffer_rect();
             let [xDest, yDest] = [rect.x, rect.y];
 
             actor.show();